package com.perfma.xtest.tool.filejava;

import org.apache.commons.compress.utils.Lists;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author: junhui.si
 * @date: 2024-01-13 17:25
 **/
public class JavaFile {

    private static final List<String> list;

    static {
        list = Lists.newArrayList();
//        list.add("StressBugExt");
//        list.add("StressBugProperty");
//        list.add("StressBug");
//        list.add("StressCustomErrorMatcherRules");
//        list.add("StressCustomExcel");
//        list.add("StressExceptionFile");
//        list.add("StressFileHistory");
//        list.add("StressFileRecord");
//        list.add("StressLabel");
//        list.add("StressMachineWorkerNature");
//        list.add("StressPlanFile");
//        list.add("StressPlanGoalBak");
//        list.add("StressPlanGoal");
//        list.add("StressPlanProperty");
//        list.add("StressPlanReport");
//        list.add("StressPlanSceneConf");
//        list.add("StressPlan");
//        list.add("StressRelAuthorizationParent");
//        list.add("StressRelGoalApp");
//        list.add("StressRelLabel");
//        list.add("StressRelScriptMachine");
//        list.add("StressRelScript");
//        list.add("StressReportCheckList");
//        list.add("StressReportTrace");
//        list.add("StressSceneAlertRule");
//        list.add("StressSceneExecBak");
//        list.add("StressSceneExecIpDetail");
//        list.add("StressSceneExecIp");
//        list.add("StressSceneExecLog");
//        list.add("StressSceneExecTaskAssetBuild");
//        list.add("StressSceneExecTaskAsset");
//        list.add("StressSceneExecTask");
//        list.add("StressSceneExecTriggerLog");
//        list.add("StressSceneExec");
//        list.add("StressSceneFuseRule");
//        list.add("StressSceneReportBak");
//        list.add("StressSceneReportData");
//        list.add("StressSceneReport");
//        list.add("StressSceneScriptConf");
//        list.add("StressSceneStrategy");
//        list.add("StressScene");
//        list.add("StressScriptAssert");
//        list.add("StressScriptBatch");
//        list.add("StressScriptConf");
//        list.add("StressScriptHistory");
//        list.add("StressScriptHost");
//        list.add("StressScriptJar");
//        list.add("StressScriptRequest");
//        list.add("StressScriptTestResource");
//        list.add("StressScript");
//        list.add("StressWorkerGroupConf");
//        list.add("StressWorkerGroup");
//        list.add("StressWorkerGroupWorkspaceConf");
//        list.add("SubmitBusiness");
//        list.add("TestReportNode");
//        list.add("TestReportRel");
//        list.add("TestReport");
//        list.add("ThirdPartyDataDeleteRecord");

//        list.add("StressBugPropertyConfig");
//        list.add("StressBugPropertyData");
//        list.add("StressPlanPropertyConfig");
//        list.add("StressPlanPropertyData");
//        list.add("StressSceneConf");
//        list.add("StressSceneExecFlowConf");
//        list.add("StressSceneStateConf");
//        list.add("StressSysParam");

        list.add("StressScriptBody");
        list.add("StressScriptData");
    }

    public static void main(String[] args) throws Exception {
        for (String s : list) {
            aaa(s, "V4ServiceImpl.java");
            aaa(s, "V5ServiceImpl.java");
            aaa(s, "VVService.java");
        }
    }

    private static void aaa(String str, String suffix) throws IOException {
        String sourceFilePath = "/Users/sijunhui/Downloads/java/ScriptArrangeStep" + suffix;
        String targetDirectoryPath = "/Users/sijunhui/Downloads/java/1";

        // 读取文件内容
        String fileContent = readFileContent(sourceFilePath);

        // 替换字符串
        String modifiedContent = fileContent.replaceAll("ScriptArrangeStep", str);

        // 获取目标文件路径
        String targetFileName = Paths.get(sourceFilePath).getFileName().toString().replaceAll("ScriptArrangeStep", str);
        String targetFilePath = Paths.get(targetDirectoryPath, targetFileName).toString();

        // 将修改后的内容写入新文件
        writeToFile(modifiedContent, targetFilePath);

        System.out.println("File content replaced and saved to: " + targetFilePath);

    }

    private static String readFileContent(String filePath) throws IOException {
        Path path = Paths.get(filePath);
        return Files.lines(path, StandardCharsets.UTF_8).collect(Collectors.joining(System.lineSeparator()));
    }

    private static void writeToFile(String content, String filePath) throws IOException {
        Path path = Paths.get(filePath);
        Files.write(path, content.getBytes(StandardCharsets.UTF_8));
    }
}
